﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using System.IO;
using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;
using Jurassic_Island;

namespace JurassicIslandWeb
{
    public partial class Registro : System.Web.UI.Page
    {

        protected void Page_Load(object sender, EventArgs e)
        {
            if (User.Identity.IsAuthenticated) //si hay usuario autenticado
                Response.Redirect("~/PanelJugador.aspx"); //se le redirige a su panel de jugador
            else
            {
                Page.Title = Master.Page.Header.Title + " - Registro";
            }
        }

        protected void btCancel_Click(object sender, EventArgs e)
        {

        }

        protected void btRegistrar_Click(object sender, EventArgs e)
        {
            


            Validate("Registro");

           
            //Hacemos la´s validaciones custom después del Validate() para que no se borren.
            customValidatorFechaNac.IsValid = ValidarFecha();
            customValidatorJugador.IsValid = ValidarJugador();

            bool valido = true;

            //FechaNac
            valido &= requiredValidatorDia.IsValid && expresionValidatorDia.IsValid;
            valido &= requiredValidatorAño.IsValid && expresionValidatorAño.IsValid;
            valido &= customValidatorFechaNac.IsValid;
            //Sexo
            valido &= requiredValidatorSexo.IsValid;
            //Email
            valido &= requiredValidatorEmail.IsValid && expresionValidatorEmail.IsValid;
            //Jugador
            valido &= requiredValidatorJugador.IsValid && customValidatorJugador.IsValid;
            //Password
            valido &= requiredValidatorPassword.IsValid && expresionValidatorPassword.IsValid;
            //Password2
            valido &= requiredValidatorPassword2.IsValid && compareValidatorPassword2.IsValid;

            if (valido)
            {
                //Registrar Jugador
                try
                {
                    ENJugadores enJug = new ENJugadores();
                    enJug.Jugador = tbJugador.Text;
                    enJug.Password = tbPassword.Text;
                    enJug.Email = tbEmail.Text;
                    enJug.Fechanac = new SqlDateTime(int.Parse(tbAnyo.Text), int.Parse(ddlMes.SelectedValue), int.Parse(tbDia.Text));
                    enJug.Sexo = char.Parse(rblSexo.SelectedValue);
                    enJug.Nombre = tbNombre.Text;
                    enJug.Apellidos = tbApellidos.Text;
                    if (fuAvatar.HasFile)
                    {
                        String nombreFoto = enJug.Jugador + Path.GetExtension(fuAvatar.PostedFile.FileName);
                        String rutaServer = Server.MapPath(@"~\Images\Avatares\");
                        String pathFoto = Path.GetFullPath(rutaServer + nombreFoto);
                        
                        fuAvatar.SaveAs(pathFoto);
                        //String avatar = SubirAvatar(fuAvatar.,enJug.Jugador);
                        enJug.Avatar = nombreFoto;
                    }

                    if (!enJug.RegistrarJugador())
                        throw new Exception("¡Error! No se pudo completar el registro");
                    else
                    {
                        lSuccess.Visible = true;
                        Response.Redirect("~/Bienvenida.aspx");
                    }
                }
                catch (Exception ex)
                {
                    lSuccess.Text = ex.Message;
                    lSuccess.Visible = true;
                }
            }
        }

        protected String SubirAvatar(String rutaOrigen, String jugador)
        {
            String nombreFoto = "";
            try
            {
                String directorio = @"Images/Avatares/";
                nombreFoto = jugador + ".jpg";
                Bitmap avatar = new Bitmap(rutaOrigen);
                avatar.Save(directorio + nombreFoto, ImageFormat.Jpeg);
            }
            catch (Exception)
            {
                nombreFoto = "";
            }
            return nombreFoto;
        }

        //Devuelve true si el campo 'Nombre de Jugador' es válido
        protected bool ValidarJugador()
        {
            bool retorno = false;
            try
            {
                ENJugadores enJug = new ENJugadores();
                enJug = enJug.ObtenerJugador(tbJugador.Text);
                if (enJug.Jugador == tbJugador.Text)
                {
                    retorno = false;
                }
                else
                {
                    retorno = true;
                }
            }
            catch (Exception)
            {
                retorno = true;
            }
            return retorno;
        }

        //Devuelve true si se puede formar una fecha válida
        protected bool ValidarFecha()
        {
            bool retorno = false;
            try
            {
                // Test whether the value entered into the text box is even.
                int dia = int.Parse(tbDia.Text);
                int mes = int.Parse(ddlMes.SelectedValue);
                int año = int.Parse(tbAnyo.Text);
                SqlDateTime fNac = new SqlDateTime(año, mes, dia);

                retorno = true;
            }

            catch (Exception ex)
            {
                retorno = false;
            }
            return retorno;
        }
    }
}